import ACCESS_ENUM from "./accessEnum";

/**
 * 检查权限（判断当前登录用户是否具有某个权限）
 * @param loginUser 当前登录用户
 * @param needAccess 需要的权限
 * @return boolean 有无权限
 */
export default function checkAccess(
  loginUser: API.LoginUserVO,
  needAccess?: (typeof ACCESS_ENUM)[keyof typeof ACCESS_ENUM]
): boolean {
  // 获取当前登录用户具有的权限
  const loginUserAccess = loginUser?.userRole ?? ACCESS_ENUM.NOT_LOGIN;

  // 如果没有设置权限，则视为公开
  if (!needAccess) {
    return true;
  }

  // 如果是公开的权限，则都可以访问
  if (needAccess === ACCESS_ENUM.NOT_LOGIN) {
    return true;
  }

  // 如果用户未登录，则无权限
  if (loginUserAccess === ACCESS_ENUM.NOT_LOGIN) {
    return false;
  }

  // 如果用户是管理员，则有所有权限
  if (loginUserAccess === ACCESS_ENUM.ADMIN) {
    return true;
  }

  // 判断用户是否具有所需权限
  return loginUserAccess === needAccess;
}
